package com.internet;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * 三.通信要素一: IP和端口号
 *
 * 1.IP: 唯一的标识Internet上的计算机 (通信实体)
 * 2.在java中使用InetAddress类代表IP
 * 3. IP分类: IPV4和IPV6; 万维网和局域网
 * 4.域名: www.baidu.com www.mi.com www.sina.com
 * 5.本地回路地址: 127.0.0.1 对应着 localhost
 * 6.如果实例化InetAddress:两个方法:getByName(String host)
 *  两个常用方法:   getHostName() / getHostAddress()
 *
 *
 * 7.端口号标识正在计算机上运行的程序
 * > 不同的进程有不同的端口号
 * > 被规定为一个16位的整数  0 ~ 65535。
 * > 端口分类:
 *          >公认端口: 0 ~ 1023。被预先定义的服务通信占用(如: HTTP占用端口80,FTP占用端口21，Telnet占用端口23)
 *          >注册端口: 1024 ~ 49151。 分配给用户的进程或应用程序。(如: Tomcat占用端口8080,Mysql占用端口3306，Oracle占用端口1521等)。
 *          >动态/私有端口: 49152 ~ 65535。
 *
 * 8.端口号与IP地址的组合得出一个网络套接字 ： Socket
 *
 *
 */
public class InteretAddressTest {

    public static void main(String[] args) {
        try {
            //创建了一个IP对象，类似于File
            InetAddress inetAddress = InetAddress.getByName("192.168.10.14");
            System.out.println(inetAddress);

            //这里会解析域名的Ip地址
            InetAddress baiduAddress = InetAddress.getByName("www.baidu.com");
            System.out.println(baiduAddress);

            //本机的回路地址
            InetAddress byName = InetAddress.getByName("127.0.0.1");
            System.out.println(byName);

            //直接获取本机的IP
            InetAddress localHost = InetAddress.getLocalHost();
            System.out.println(localHost);

            String hostName = baiduAddress.getHostName();
            System.out.println(hostName);

            String hostAddress = baiduAddress.getHostAddress();
            System.out.println(hostAddress);


        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }

}
